7. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ


7.1. Основные технологии программирования


При разработке компьютерных моделей для задач, решаемых по сложным и громоздким алгоритмам, получаются длинные программы, которые очень сложно отлаживать и тестировать. Для облегчения этих работ были разработаны разные технологии программирования, которые упрощают структуру программы и ее отладку. Основные из них:
модульное программирование;
– программирование «снизу вверх» (восходящее программирование);
программирование «сверху вниз» (нисходящее программирование).
Согласно этим технологиям в алгоритме задачи выделяются модули. Модуль – это либо логически законченный фрагмент общей
задачи, либо часто повторяющийся блок расчётов.
Каждый модуль оформляется по определённым правилам в виде подпрограммы, и в текст основного алгоритма вместо него вставляется короткая инструкция вызова подпрограммы. Когда выполнение программы доходит до этой инструкции, выполняется фрагмент, заложенный в тело подпрограммы, после чего управление передаётся на команду, следующую за инструкцией вызова подпрограммы.
Различают подпрограммы функции (используются как операнды в выражениях) и процедуры (используются как операторы).
Общую структуру подпрограмм можно представить следующим образом:


Тело подпрограммы – это операторы, которые программируют ту часть алгоритма, которая выделена в данный модуль. Формальные параметры – это те переменные в теле подпрограммы, значения которых надо будет перед началом работы этого модуля получить из основной программы.
В инструкции по вызову указывается имя подпрограммы и фактические параметры, то есть значения формальных параметров, с которыми следует выполнить тело подпрограммы в данном месте.
Пример. Дан массив целых чисел {ai},i=1, 2, ..., 15. Программа должна вычислять произведение двух сумм некоторых элементов массива {ai}. Так как операции, которые следует выполнить для суммирования, не зависят от конкретных значений используемых чисел, алгоритм суммирования, чтобы не повторять его дважды, можно оформить в виде подпрограммы. Поскольку по условию задачи конечным результатом должно быть произведение сумм, а не каждая из них по отдельности, подпрограмму можно оформить по типу подпрограммы-функции. Алгоритм, по которому будет составляться программа, представляем в псевдокоде:

Функция СУММА(i1,i2)
начало: s = 0
начало цикла для i = i1 до i2
s = s + a(i)
конец цикла
СУММА = s
Конец функции
Начало программы
вывести на экран("введите значения массива А")
начало цикла для j = 1 до 15
ввести с клавиатуры а(j)
конец цикла
вывести на экран ("введите границы индексов первой
суммы")
ввести с клавиатуры g, w
вывести на экран ("введите границы индексов второй
суммы")
ввести с клавиатуры t, l
р:= СУММА(g,w) * СУММА(t,l)
вывести на экран ("произведение равно", р)
Конец программы
В программу введены константы: g = 1; w = 12; t = 8; l = 15.
Это – фактические параметры, которые надо использовать вместо формальных параметров i1 и i2 при вычислении значения p. В результате переменная p примет значение произведения сумм элементов с 1 по 12 и с 8 по 15 из массива {ai}.
При использовании технологии «сверху вниз» разработка программы начинается с последовательной детализации алгоритма на все более мелкие части до тех пор, пока получатся такие модули, для которых можно написать конкретные команды. Затем составляется текст основной программы, в которой вместо фрагментов, выделенных в подпрограммы, ставят «заглушки». Это подпрограммы, в которых вместо реально нужных операторов ставят сигнальные печати
или ввод результатов, которые должна была сосчитать эта подпрограмма. Таким образом проверяют и отлаживают последовательность действий в основном алгоритме. Затем подпрограммы-заглушки по очереди заменяют на соответствующие алгоритму подпрограммы, отлаживают и тестируют их. Такая технология облегчает создание программы, уменьшает количество ошибок и облегчает нахождение допущенных ошибок. Считается, что программа оптимального по
размерам модуля целиком должна помещаться на экране дисплея.
При использовании технологии «снизу вверх» в первую очередь определяются и разрабатываются вспомогательные модули, которые потребуются для проектируемой программы. После того, как все модули отлажены, из них, как из кубиков, в соответствии с начальным алгоритмом собирается основная программа.